"""
手势事件例子的UI层。
"""
import typing

from elio import core


class GestureLayer(core.AutoRecycleLayer[core.Activity]):
    tGesture: core.WidgetText

    async def on_create(self, *args: typing.Any, **kwargs: typing.Dict):
        await super().on_create(*args, *kwargs)

    async def on_show(self):
        await super().on_show()
        activity = self.parent
        width, height = await activity.get_screen_size()
        # 创建用于监听手势的文字小部件
        self.tGesture = await core.WidgetText.create(activity, width, height, 0, 0)

        async def cb(x: int, y: int, pressed: bool, pointer_count: int):
            """
            触摸事件。
            :param x: 横坐标。
            :param y: 纵坐标。
            :param pressed: 是否处于按下。
            :param pointer_count: 手指数量。
            """
            print(x, y, pressed, pointer_count)

        await self.tGesture.set_on_gesture_listener(cb)

    async def on_hide(self):
        await super().on_hide()
        # 销毁小部件
        await self.tGesture.destroy()

    async def on_pause(self):
        await super().on_pause()

    async def on_resume(self):
        await super().on_resume()

    async def on_destroy(self, *args: typing.Any, **kwargs: typing.Dict):
        await super().on_destroy(*args, **kwargs)
